home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / GRAPHICS / GMSMTH01.ZIP / INCLUDE / G_IO.H < prev    next >
Encoding:
C/C++ Source or Header  |  1995-12-15  |  3.7 KB  |  195 lines

  1. /*
  2.  
  3.    copyright 1993, Alec Russell
  4.    all rights reserved
  5.  
  6.  
  7.    low level joy stick, mouse and keyboard stuff
  8.  
  9. */
  10.  
  11. #ifndef DEF_G_IO
  12. #define DEF_G_IO 1
  13.  
  14. #include <gtimer.h>
  15.  
  16. #include <g_def.h>
  17.  
  18. #define NUM_KEYS 84
  19. #define KEY_UP   128
  20. #define KEY_MASK 127
  21. extern unsigned char key_stat[NUM_KEYS];
  22.  
  23. #define MOUSE_MOVE   1
  24. #define MOUSE_L_UP   4
  25. #define MOUSE_L_DN   2
  26. #define MOUSE_R_UP   16
  27. #define MOUSE_R_DN   8
  28.  
  29. #define EVENT_MASK   31   /* the logical OR of the 5 above vars */
  30.  
  31. #define MAX_EVENT    25
  32.  
  33. enum event_types
  34.    {
  35.    E_MOUSE_MOVE,
  36.    E_R_BUTTON_DN,
  37.    E_R_BUTTON_UP,
  38.    E_L_BUTTON_DN,
  39.    E_L_BUTTON_UP,
  40.    E_JOY_X_LEFT,
  41.    E_JOY_X_CENTRE,
  42.    E_JOY_X_RIGHT,
  43.    E_JOY_Y_UP,
  44.    E_JOY_Y_CENTRE,
  45.    E_JOY_Y_DOWN,
  46.    E_B0_UP,
  47.    E_B0_DN,
  48.    E_B1_UP,
  49.    E_B1_DN,
  50.    E_KEY,
  51.    E_GUI,
  52.    E_INVALID
  53.    };
  54.  
  55. enum event_sub_types
  56.    {
  57.    E_UP,
  58.    E_DOWN
  59.    };
  60.  
  61. typedef struct
  62.    {
  63.    BYTE type;
  64.    BYTE sub_type;
  65.    short x, y;
  66.    USHORT d1, d2;    /* data, depends on type and sub-type */
  67.    ULONG time;
  68.    }
  69. event_t;
  70.  
  71. typedef struct 
  72.    {
  73.    BYTE ascii;    /* bottom of key */
  74.    BYTE s_ascii;  /* top of key */
  75.    }
  76. scan_code_t;
  77.  
  78. /* sortof ascii values for wierd keys : event.d2 */
  79. #define ESC      0x1b
  80. #define BCKSPC   0x08
  81. #define TAB      0x09
  82. #define CR       0x0d
  83. #define SPACE    0x20
  84.  
  85. #define F1       0xf1
  86. #define F2       0xf2
  87. #define F3       0xf3
  88. #define F4       0xf4
  89. #define F5       0xf5
  90. #define F6       0xf6
  91. #define F7       0xf7
  92. #define F8       0xf8
  93. #define F9       0xf9
  94. #define F10      0xfa
  95.  
  96. #define HOME       0xd0
  97. #define UP         0xd1
  98. #define PGUP       0xd2
  99.  
  100. #define LEFT       0xd4
  101. #define CENTRE     0xd5
  102. #define RIGHT      0xd6
  103.  
  104. #define END        0xd8
  105. #define DOWN       0xd9
  106. #define PGDN       0xda
  107. #define INS        0xdb
  108. #define DEL        0xdc
  109.  
  110.  
  111. #define CT_A 1
  112. #define CT_B 2
  113. #define CT_C 3
  114. #define CT_D 4
  115. #define CT_E 5
  116. #define CT_F 6
  117. #define CT_G 7
  118. #define CT_H 8
  119. #define CT_I 9
  120. #define CT_J 10
  121. #define CT_K 11
  122. #define CT_L 12
  123. #define CT_M 13
  124. #define CT_N 14
  125. #define CT_O 15
  126. #define CT_P 16
  127. #define CT_Q 17
  128. #define CT_R 18
  129. #define CT_S 19
  130. #define CT_T 20
  131. #define CT_U 21
  132. #define CT_V 22
  133. #define CT_W 23
  134. #define CT_X 24
  135. #define CT_Y 25
  136. #define CT_Z 26
  137.  
  138. // scan codes: event.d1
  139. #define SC_ALT 0x38
  140.  
  141. /* values to mask into key_flags */
  142. #define KM_ALT     0x01
  143. #define KM_SHIFT   0x02
  144. #define KM_CAPS    0x04
  145. #define KM_CTRL    0x08
  146.  
  147. // values to mask into key pressed value
  148. #define KM_ALT_PLUS   0x100
  149. #define KM_SHIFT_PLUS 0x200
  150. #define KM_CTRL_PLUS  0x400
  151.  
  152. /* keyboard controller and LED lights stuff */
  153. #define KEYSTATUS 0x64
  154. #define KEYDATA  0x60
  155. #define LEDUPDATE 0xed
  156. #define OB_FULL 1
  157. #define IB_FULL 2
  158. #define KEY_ACK 0xfa
  159. #define NUMLOCK 2
  160. #define CAPLOCK 4
  161.  
  162.  
  163. void clear_all_events(void);
  164. void get_key(void);
  165. void mouse_int(void);
  166. void read_joy(void);
  167. void init_events(char *mouse_name);
  168. void deinit_events(void);
  169. short get_event(event_t *event);
  170. short peek_event(event_t *event);
  171. void set_max_mouse(short max_x, short max_y);
  172. void init_keyboard(void);
  173. void deinit_keyboard(void);
  174. void wait_event(event_t *event);
  175. void insert_event(event_t *event);
  176. short send_keycontrol(BYTE v); // send a byte to the keyboard controller
  177.  
  178. extern void far *far mouse_event_func;
  179. extern event_t gb_events[MAX_EVENT];
  180. extern USHORT gb_e_head, gb_e_tail;
  181. extern short joy_x, joy_y;
  182. extern BYTE b0, b1;
  183. extern short want_mouse_moves;
  184. extern short mouse_present;
  185. extern short mouse_hidden;
  186. extern short mouse_x, mouse_y;
  187. extern short button_stat;
  188. extern BYTE key_flags;
  189. extern BYTE gb_key;
  190. extern BYTE gb_auto_repeat;
  191.  
  192. #endif
  193.  
  194. /* ----------------------- end of file ------------------------------- */
  195.